Pharmacy generally began with the compounding of medicines, which entailed the actual mixing and preparing of medications. Heretofore, pharmacy has been, to a great extent, a profession of dispensing, that is, the pouring, counting, and labeling of a prescription, and subsequently transferring the dispensed medication to the patient. Because of the repetitiveness of many of the pharmacist's tasks, automation of these tasks has been desirable.
Some attempts have been made to automate all or portions of the pharmacy environment. Different exemplary approaches are shown in U.S. Pat. Nos. 6,006,946; 6,036,812, 6,176,392, and 6,971,541 to Williams et al. and in U.S. Pat. No. 7,014,063 to Shows et al. Some conventional automated systems for dispensing pharmaceuticals use multiple dispensing bins. Each dispensing bin may include a hopper in which tablets are stored, and a dispensing channel fluidly connecting the hopper to a dispensing outlet. Forward and reverse air flows may be used to selectively convey the tablets through the dispensing channel in each of a dispensing direction (toward the outlet) and a reverse direction (toward the hopper). A counting sensor may be positioned proximate the outlet of the dispensing channel and may be used to detect tablets passing the sensor in order to maintain a count of the tablets dispensed. Such systems may also be configured to select an appropriate vial, label the vial, fill the vial with a desired quantity of a selected pharmaceutical tablet, apply a cap to the filled vial, and convey the labeled, filled, capped vial to an offloading station for retrieval.
Although conventional systems can provide some automated steps to pharmaceutical dispensing, certain of the operations may be improved. For example, in a system that includes a relatively large number of tablet or pill-containing bins (also referred to hereinafter as “cells”) connected together via a parallel communication bus, it may be desirable for the system master controller to intermittently or periodically check the status of each cell in the system.
One conventional solution for checking cell status is by polling the cells and/or controllers associated therewith in a round-robin approach, asking each cell or controller in turn whether they have any new information and/or status to report. If a cell or controller has such information, a master controller can then request that cell or controller to transmit the information to the master controller. However, such round-robin polling may be both traffic-intensive and time-consuming. For instance, cells may often have no information to transmit to the master controller, and thus time may be wasted by repeatedly polling the cells. Also, for a system that includes a large number of cells (for example, 256 cells), the amount of time required to complete even one round-robin cycle may be considerable. This could cause significant issues in time-critical networks, where those cells that do have information to transmit must do so quickly. For instance, a cell may wish to report that a tablet stored in the cell has jammed a chute for dispensing the tablet into a vial; however, if that cell has recently been polled in a conventional round-robin system, it may have to wait for up to 255 of the other cells to report their status before it is able to report the jam.